month_start <- ym(params$month_start)
month_end <- ym(params$month_end)
# Calculate number of months
months_diff <- floor((month_start %--% month_end) / dmonths(1))
# Create vector with all the relevant months
month_list <- month_start + months(0:months_diff)
# Generate file names using months specified above
filename <- map(month_list, ~ sprintf("../quality_standard/download_analytics/HSC dashboard - Engagement and implementation_All webpages_ links and downloads_Table_%s.csv", as.character(.x) %>% str_remove("-01$")))
# Import data
data <- filename %>%
set_names() %>%
map_dfr(read_csv, col_types = "ccd", .id = "filename")
# Extract the date from the file name
data <- data %>%
mutate(year_month = str_extract(filename, "(?<=Table_)\\d{4}-\\d{2}(?=.csv)") %>% ym(.)) %>%
select(-filename)
# Filter for relevant file rows
selected <- data %>%
filter(str_detect(File, params$file_regex)) %>%
select(year_month, everything()) %>%
rename(page_path = 'Page path',
file = File,
downloads = Downloads)
# Save
write_csv(selected, sprintf('./output/%s_%s_to_%s.csv', params$file_regex, params$month_start, params$month_end))
# Present raw data
selected %>%
datatable(.,
filter = "top",
colnames = c("Month" = "year_month",
"Download page" = "page_path",
"File URL" = "file",
"Downloads" = "downloads"),
rownames = FALSE,
extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv')
))
Monthly downloads of the Quality improvement resource
total_downloads <- selected %>%
group_by(year_month) %>%
summarise(downloads = sum(downloads))
total_downloads %>%
mutate(year_month = zoo::as.yearmon(year_month)) %>%
rename("Month" = year_month,
"Downloads" = downloads) %>%
kbl() %>%
kable_styling(bootstrap_options = c("striped", "hover"))
|
Month
|
Downloads
|
|
Jun 2019
|
131
|
|
Jul 2019
|
127
|
|
Aug 2019
|
90
|
|
Sep 2019
|
84
|
|
Oct 2019
|
118
|
|
Nov 2019
|
146
|
|
Dec 2019
|
76
|
|
Jan 2020
|
120
|
|
Feb 2020
|
122
|
|
Mar 2020
|
81
|
|
Apr 2020
|
61
|
|
May 2020
|
56
|
|
Jun 2020
|
64
|
|
Jul 2020
|
80
|
|
Aug 2020
|
79
|
|
Sep 2020
|
73
|
|
Oct 2020
|
55
|
|
Nov 2020
|
48
|
|
Dec 2020
|
68
|
|
Jan 2021
|
109
|
|
Feb 2021
|
124
|
|
Mar 2021
|
145
|
|
Apr 2021
|
132
|
|
May 2021
|
134
|
|
Jun 2021
|
119
|
|
Jul 2021
|
241
|
|
Aug 2021
|
85
|
|
Sep 2021
|
91
|
|
Oct 2021
|
99
|
|
Nov 2021
|
128
|
|
Dec 2021
|
90
|
|
Jan 2022
|
120
|
|
Feb 2022
|
127
|
|
Mar 2022
|
238
|
|
Apr 2022
|
88
|
|
May 2022
|
126
|
|
Jun 2022
|
100
|
fig <- total_downloads %>%
mutate(year_month = zoo::as.yearmon(year_month)) %>%
ggplot(aes(x = year_month, y = downloads)) +
geom_line() +
labs(x = "Month",
y = "Downloads",
title = paste0("Total monthly downloads of ", params$file_regex)) +
scale_y_continuous(expand = c(0,0),
limits = c(0, NA))
fig %>% ggplotly()
LS0tDQp0aXRsZTogIkdvb2dsZSBhbmFseXRpY3MiDQphdXRob3I6ICJJbXBhY3QgdGVhbSINCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogDQogICAgaHRtbF9kb2N1bWVudDoNCiAgICAgICAgdG9jOiBUUlVFDQogICAgICAgIHRvY19mbG9hdDogVFJVRQ0KICAgICAgICBjb2RlX2Rvd25sb2FkOiBUUlVFDQogICAgICAgIGNvZGVfZm9sZGluZzogImhpZGUiDQpwYXJhbXM6DQogICAgbW9udGhfc3RhcnQ6IDIwMTktMDYNCiAgICBtb250aF9lbmQ6IDIwMjItMDYNCiAgICBwcm9kdWN0OiBRdWFsaXR5IGltcHJvdmVtZW50IHJlc291cmNlDQogICAgZmlsZV9yZWdleDogcXVhbGl0eS1pbXByb3ZlbWVudC1yZXNvdXJjZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KHpvbykNCmxpYnJhcnkocGxvdGx5KQ0KIyBsaWJyYXJ5KHJlYWN0YWJsZSkNCg0KYGBgDQoNCmBgYHtyfQ0KbW9udGhfc3RhcnQgPC0geW0ocGFyYW1zJG1vbnRoX3N0YXJ0KQ0KbW9udGhfZW5kIDwtIHltKHBhcmFtcyRtb250aF9lbmQpDQoNCiMgQ2FsY3VsYXRlIG51bWJlciBvZiBtb250aHMNCm1vbnRoc19kaWZmIDwtIGZsb29yKChtb250aF9zdGFydCAlLS0lIG1vbnRoX2VuZCkgLyBkbW9udGhzKDEpKQ0KDQojIENyZWF0ZSB2ZWN0b3Igd2l0aCBhbGwgdGhlIHJlbGV2YW50IG1vbnRocw0KbW9udGhfbGlzdCA8LSBtb250aF9zdGFydCArIG1vbnRocygwOm1vbnRoc19kaWZmKQ0KDQojIEdlbmVyYXRlIGZpbGUgbmFtZXMgdXNpbmcgbW9udGhzIHNwZWNpZmllZCBhYm92ZQ0KZmlsZW5hbWUgPC0gbWFwKG1vbnRoX2xpc3QsIH4gc3ByaW50ZigiLi4vcXVhbGl0eV9zdGFuZGFyZC9kb3dubG9hZF9hbmFseXRpY3MvSFNDIGRhc2hib2FyZCAtIEVuZ2FnZW1lbnQgYW5kIGltcGxlbWVudGF0aW9uX0FsbCB3ZWJwYWdlc18gbGlua3MgYW5kIGRvd25sb2Fkc19UYWJsZV8lcy5jc3YiLCBhcy5jaGFyYWN0ZXIoLngpICU+JSBzdHJfcmVtb3ZlKCItMDEkIikpKQ0KYGBgDQoNCg0KYGBge3J9DQojIEltcG9ydCBkYXRhDQpkYXRhIDwtIGZpbGVuYW1lICU+JSANCiAgICBzZXRfbmFtZXMoKSAlPiUgDQogICAgbWFwX2RmcihyZWFkX2NzdiwgY29sX3R5cGVzID0gImNjZCIsIC5pZCA9ICJmaWxlbmFtZSIpDQoNCiMgRXh0cmFjdCB0aGUgZGF0ZSBmcm9tIHRoZSBmaWxlIG5hbWUNCmRhdGEgPC0gZGF0YSAlPiUgDQogICAgbXV0YXRlKHllYXJfbW9udGggPSBzdHJfZXh0cmFjdChmaWxlbmFtZSwgIig/PD1UYWJsZV8pXFxkezR9LVxcZHsyfSg/PS5jc3YpIikgJT4lIHltKC4pKSAlPiUgDQogICAgc2VsZWN0KC1maWxlbmFtZSkNCmBgYA0KDQoNCmBgYHtyfQ0KIyBGaWx0ZXIgZm9yIHJlbGV2YW50IGZpbGUgcm93cw0Kc2VsZWN0ZWQgPC0gZGF0YSAlPiUgDQogICAgZmlsdGVyKHN0cl9kZXRlY3QoRmlsZSwgcGFyYW1zJGZpbGVfcmVnZXgpKSAlPiUgDQogICAgc2VsZWN0KHllYXJfbW9udGgsIGV2ZXJ5dGhpbmcoKSkgJT4lIA0KICAgIHJlbmFtZShwYWdlX3BhdGggPSAnUGFnZSBwYXRoJywNCiAgICAgICAgICAgZmlsZSA9IEZpbGUsDQogICAgICAgICAgIGRvd25sb2FkcyA9IERvd25sb2FkcykNCmBgYA0KDQoNCmBgYHtyfQ0KIyBTYXZlDQp3cml0ZV9jc3Yoc2VsZWN0ZWQsIHNwcmludGYoJy4vb3V0cHV0LyVzXyVzX3RvXyVzLmNzdicsIHBhcmFtcyRmaWxlX3JlZ2V4LCBwYXJhbXMkbW9udGhfc3RhcnQsIHBhcmFtcyRtb250aF9lbmQpKQ0KDQpgYGANCg0KDQpgYGB7cn0NCiMgUHJlc2VudCByYXcgZGF0YQ0Kc2VsZWN0ZWQgJT4lIA0KICAgIGRhdGF0YWJsZSguLA0KICAgICAgICAgIGZpbHRlciA9ICJ0b3AiLA0KICAgICAgICAgIGNvbG5hbWVzID0gYygiTW9udGgiID0gInllYXJfbW9udGgiLA0KICAgICAgICAgICAgICAgICAgICAgICAiRG93bmxvYWQgcGFnZSIgPSAicGFnZV9wYXRoIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgVVJMIiA9ICJmaWxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIkRvd25sb2FkcyIgPSAiZG93bmxvYWRzIiksDQogICAgICAgICAgcm93bmFtZXMgPSBGQUxTRSwNCiAgICAgICAgICBleHRlbnNpb25zID0gJ0J1dHRvbnMnLCANCiAgICAgICAgICBvcHRpb25zID0gbGlzdCgNCiAgICAgICAgICAgICAgZG9tID0gJ0JmcnRpcCcsDQogICAgICAgICAgICAgIGJ1dHRvbnMgPSBjKCdjc3YnKQ0KICApKQ0KYGBgDQojIGByIHBhc3RlMCgiTW9udGhseSBkb3dubG9hZHMgb2YgdGhlICIsIHBhcmFtcyRwcm9kdWN0KWANCmBgYHtyfQ0KdG90YWxfZG93bmxvYWRzIDwtIHNlbGVjdGVkICU+JSANCiAgICBncm91cF9ieSh5ZWFyX21vbnRoKSAlPiUgDQogICAgc3VtbWFyaXNlKGRvd25sb2FkcyA9IHN1bShkb3dubG9hZHMpKQ0KDQp0b3RhbF9kb3dubG9hZHMgJT4lIA0KICAgIG11dGF0ZSh5ZWFyX21vbnRoID0gem9vOjphcy55ZWFybW9uKHllYXJfbW9udGgpKSAlPiUgDQogICAgcmVuYW1lKCJNb250aCIgPSB5ZWFyX21vbnRoLA0KICAgICAgICAgICAiRG93bmxvYWRzIiA9IGRvd25sb2FkcykgJT4lIA0KICAgIGtibCgpICU+JSANCiAgICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpKQ0KYGBgDQoNCmBgYHtyfQ0KZmlnIDwtIHRvdGFsX2Rvd25sb2FkcyAlPiUgDQogICAgbXV0YXRlKHllYXJfbW9udGggPSB6b286OmFzLnllYXJtb24oeWVhcl9tb250aCkpICU+JSANCiAgICBnZ3Bsb3QoYWVzKHggPSB5ZWFyX21vbnRoLCB5ID0gZG93bmxvYWRzKSkgKw0KICAgIGdlb21fbGluZSgpICsNCiAgICBsYWJzKHggPSAiTW9udGgiLA0KICAgICAgICAgeSA9ICJEb3dubG9hZHMiLA0KICAgICAgICAgdGl0bGUgPSBwYXN0ZTAoIlRvdGFsIG1vbnRobHkgZG93bmxvYWRzIG9mICIsIHBhcmFtcyRmaWxlX3JlZ2V4KSkgKw0KICAgIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksDQogICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgTkEpKQ0KICAgIA0KDQpmaWcgJT4lIGdncGxvdGx5KCkNCmBgYA0KDQo=